(load "matrix.scm")


;;Mapa
;;01-02-03-04-05
;;06-07-08-09-10
;;11-12-13-14-15
;;16-17-18-19-20
;;21-22-23-24-25

(begin
  (define s13 (sala "Corredor1" "Corredor1" 3 3 '() '()))
  (define s08 (sala "Corredor2" "Corredor2" 3 2 '() '()))
  (define s14 (sala "Quarto" "Um quarto" 4 3 '() '()))
  (define s09 (sala "Sala" "Uma sala" 4 2 '() '()))
  (define s07 (sala "Cozinha" "Uma Cozinha" 2 2 '() '()))
  (define s12 (sala "Quarto2" "Outro quarto" 2 3 '() '()))
  (define s03 (sala "Banheiro" "Um banheiro" 3 1 '() '())))





;;funçao que inicializa o mapa dixando todas as posições como null
(define make-mapa
  (lambda (x y)
    (let ((mat (make-matrix x y)))
      (do ((i 0 (+ i 1)))
          ((= i x) i)
        (do ((j 0 (+ j 1)))
            ((= j y) j)
          (matrix-set! mat i j '())))
      mat)))
      
;;metodo que adiciona uma sala no mapa
(define add-sala-mapa
  (lambda (mapa sala)
    (matrix-set! mapa (x sala) (y sala) sala)))

;;retorna uma sala específica
(define get-sala
  (lambda (mapa x y)
    (if (and (>= x 0) (>= y 0) (< x 5) (< y 5))
    (matrix-ref mapa x y)
    '())))
(define mapa (make-mapa 5 5))

(begin
  (add-sala-mapa mapa s13)
  (add-sala-mapa mapa s08)
  (add-sala-mapa mapa s14)
  (add-sala-mapa mapa s09)
  (add-sala-mapa mapa s07)
  (add-sala-mapa mapa s12)
  (add-sala-mapa mapa s03))

